/**
 * Description:
 * Class Name:CollectionStream
 * Date:2022/2/26 13:25
 *
 * @author LTisme
 * @version JAVA17
 */
package 疯狂Java讲义.第8章_Java集合._8_2_Java11增强的Collection和Iterator接口._8_2_6_使用Stream操作集合;

import java.util.HashSet;

public class CollectionStream {
    public static void main(String[] args) {
        // 创建一个集合
        var books = new HashSet();
        books.add("book1");
        books.add("book2");
        books.add("book3");
        books.add("crazy about it");

        // 统计书名包含"book"的图书数量
        System.out.println(books.stream()
                .filter(ele -> {return ((String) ele).contains("book");}).count());
        // 统计书名包含"crazy"的图书数量
        System.out.println(books.stream().filter(ele -> ((String) ele).contains("crazy")).count());
        // 统计书名长于10个字符的图书数量
        System.out.println(books.stream().filter(ele -> ((String) ele).length() > 10).count());

        // 先调用Collection对象的stream()方法将集合转换为Stream，再调用Stream的mapToInt()方法进行转换成IntStream，这里转换成了字符串的长度
        // mapToInt()就是一个中间方法，所以可以继续用forEach方法遍历IntStream中每个元素
        System.out.println("------------------------");
        books.stream().mapToInt(ele -> ((String) ele).length()).forEach(System.out::println);       // 输出5、5、5、14
    }
}
